MKT-70: Add SEO metadata and Schema.org JSON-LD for blog pages#11020
Closed
roomote[bot] wants to merge 6 commits intomainfrom
Closed
MKT-70: Add SEO metadata and Schema.org JSON-LD for blog pages#11020roomote[bot] wants to merge 6 commits intomainfrom
roomote[bot] wants to merge 6 commits intomainfrom
Conversation
- Add gray-matter for frontmatter parsing - Create BlogPost type and zod schema for validation - Implement PT timezone helpers (getNowPt, parsePublishTimePt) - Implement content loading (getAllBlogPosts, getBlogPostBySlug) - Implement isPublished for request-time publish gating - Add validation for frontmatter and duplicate slugs - Create content/blog directory for markdown files Closes: MKT-67
…he Past Adds the first canonical blog post to validate the content pipeline: - Title: PRDs Are Becoming Artifacts of the Past - Slug: prds-are-becoming-artifacts-of-the-past - Status: published - Publish date: 2026-01-12 at 9:00am PT Content sourced from Office Hours S01E15 with Paige Bailey. Closes: MKT-73
- Create blog index page at /blog - Use force-dynamic for request-time publish gating - Require Node.js runtime for filesystem reads - Display posts with title, description, and date - Add empty state when no posts are published - Include tags display (up to 3) Closes: MKT-68
- Create dynamic route for individual blog posts - Use force-dynamic for request-time publish gating - Require Node.js runtime for filesystem reads - Return 404 for drafts, future posts, or invalid slugs - Render Markdown with react-markdown + remark-gfm - No raw HTML rendering (safe by default) - Include consistent typography and styling Closes: MKT-69
- Add structured-data.ts with Article, CollectionPage, and BreadcrumbList schemas - Integrate JSON-LD into /blog index page (Blog collection + breadcrumbs) - Integrate JSON-LD into /blog/[slug] page (Article + post breadcrumbs) - Export structured data utilities from blog module index MKT-70
Contributor
|
🚀 Preview deployed! Your changes have been deployed to Vercel: Preview URL: https://roo-code-website-lbzknuh3f-roo-code.vercel.app This preview will be updated automatically when you push new commits to this PR. |
Contributor
Author
Review complete. No issues found. The implementation follows Schema.org specifications correctly, uses proper Next.js 15 patterns, and has appropriate TypeScript types and error handling throughout. Mention @roomote in a comment to request specific changes to this pull request or fix all unresolved issues. |
Collaborator
|
This was a Linear test, no need to merge |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Makes blog pages citation-ready for SEO/AEO with correct metadata and Schema.org structured data so AI systems and Google can parse and cite us reliably.
Changes
Structured Data (
src/lib/blog/structured-data.ts)getArticleStructuredData()- Article JSON-LD for blog postsgetBlogCollectionStructuredData()- CollectionPage + ItemList JSON-LD for blog indexgetBlogBreadcrumbStructuredData()- BreadcrumbList for/bloggetBlogPostBreadcrumbStructuredData()- BreadcrumbList for/blog/[slug]Blog Index (
/blog)https://roocode.com/blog), OG/Twitter cardsBlog Post (
/blog/[slug])generateMetadatawith title, description, canonical, OG/Twitter cards from frontmatterAEO Requirements
https://roocode.com/blog/...)src/lib/seo,src/lib/og)Definition of Done
/blogand/blog/[slug]have correct canonical + OG/Twitter metadata/blog/[slug]includes valid Article JSON-LD (passes Google Rich Results)/blogincludes valid CollectionPage/ItemList schema for published posts